package com.ccit.springbootlaw.service.impl;

import com.ccit.springbootlaw.mapper.RootMapper;
import com.ccit.springbootlaw.pojo.Root;
import com.ccit.springbootlaw.service.RootService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 管理员服务实现类
 * 实现了RootService接口，提供了管理员相关的业务逻辑
 */
@Service
public class RootServiceImpl implements RootService {

    @Autowired
    private RootMapper rootMapper;

    /**
     * 根据ID查询管理员
     *
     * @param id 管理员ID
     * @return 返回找到的管理员对象，如果未找到则返回null
     */
    @Override
    public Root findById(int id) {
        return rootMapper.findById(id);
    }

    /**
     * 根据传入实体进行多条件查询的方法（其中对用户名进行模糊查询）
     *
     * @param root 包含查询条件的管理员对象
     * @return 返回符合条件的管理员列表
     */
    @Override
    public List<Root> findByRootWithUsernameLike(Root root) {
        return rootMapper.findByRootWithUsernameLike(root);
    }

    /**
     * 根据用户名或ID查询管理员，并验证密码
     *
     * @param name     用户名
     * @param id       管理员ID
     * @param password 密码
     * @return 返回找到的管理员对象，如果未找到或密码不匹配则返回null
     */
    @Override
    public Root findByUsernameOrIdAndPassword(String name, int id, String password) {
        return rootMapper.findByUsernameOrIdAndPassword(name, id, password);
    }

    /**
     * 插入新的管理员
     *
     * @param root 管理员对象
     * @return 返回插入操作影响的行数
     */
    @Override
    public int insertRoot(Root root) {
        return rootMapper.insertRoot(root);
    }

    /**
     * 更新管理员信息
     *
     * @param root 包含更新信息的管理员对象
     * @return 返回更新操作影响的行数
     */
    @Override
    public int updateRoot(Root root) {
        return rootMapper.updateRoot(root);
    }

    /**
     * 删除管理员
     *
     * @param id 管理员ID
     * @return 返回删除操作影响的行数
     */
    @Override
    public int deleteRootById(int id) {
        return rootMapper.deleteRootById(id);
    }

    /**
     * 查询所有管理员
     *
     * @return 返回所有管理员的列表
     */
    @Override
    public List<Root> findAllRoots() {
        return rootMapper.findAllRoots();
    }
}